import Vue from 'vue'
import Vuex from 'vuex'
import cloneDeep from 'lodash/cloneDeep'
import permission from '@/store/modules/permission' // 导入 permission 模块
import user from '@/store/modules/user' // 导入 user 模块
import app from '@/store/modules/app'

// 确保 Vue 和 Vuex 已正确安装（适用于 Vue 2）
Vue.use(Vuex)

export default new Vuex.Store({
  modules: {
    permission, // 注册 permission 模块
    user, // 注册 user 模块
    app
  },
  state: {
    // 添加默认状态
    defaultAvatar: '@/assets/default-avatar.png'
  },
  getters: {
    // 添加全局getter
    defaultAvatar: state => state.defaultAvatar
  },
  mutations: {
    // 重置 Vuex 本地存储状态（从 window.SITE_CONFIG 获取默认值）
    resetStore (state) {
      if (window.SITE_CONFIG?.storeState) {
        Object.keys(state).forEach((key) => {
          if (window.SITE_CONFIG.storeState?.[key]) {
            state[key] = cloneDeep(window.SITE_CONFIG.storeState[key])
          }
        })
      } else {
        console.warn('window.SITE_CONFIG.storeState is not defined!')
        // 重置为默认值
        state.defaultAvatar = '@/assets/img/z.jpg'
      }
    }
  },
  strict: process.env.NODE_ENV !== 'production', // 开发环境启用严格模式

  // 新增初始化逻辑
  actions: {
    async init ({ dispatch }) {
      try {
        await dispatch('user/initAuth') // 初始化用户token
        await dispatch('app/loadSettings')
        // 可以添加其他模块的初始化
      } catch (error) {
        console.error('Store初始化失败:', error)
      }
    }
  }
})

